#ifndef __MARS_GP_DEVICE_H__
#define __MARS_GP_DEVICE_H__

#include "MarsObject.h"
#include "MarsSharedPtr.h"
#include "MarsGPConstants.h"

using namespace Core;

namespace GP 
{

class Device : public Object, public RefCountObject
{
public:
									Device( PlatformVendor ePlatform, DeviceType eDeviceType );
	virtual							~Device();

	PlatformVendor					GetPlatform() const;
	DeviceType						GetDeviceType() const;

protected:
	PlatformVendor					m_ePlatform;
	DeviceType						m_eDeviceType;
};

inline Device::Device( PlatformVendor ePlatform, DeviceType eDeviceType )
	: m_ePlatform( ePlatform )
	, m_eDeviceType( eDeviceType )
{

}

inline Device::~Device()
{

}

inline PlatformVendor Device::GetPlatform() const
{
	return m_ePlatform;
}

inline DeviceType Device::GetDeviceType() const
{
	return m_eDeviceType;
}

typedef SharedPtr< Device > DevicePtr;

} // end of namespace GP

#endif // end of #ifndef __MARS_DEVICE_H__